1 using System.Collections;
2 using System.Collections.Generic;
3 using UnityEngine;
4
5 public class FairyScript : MonoBehaviour {
6
7 public int playerLives = 1;
8
9 public GameObject bullet;
10 bool isGrabbed;
11
12 // Use this for initialization
13 void Start () {
14 InvokeRepeating("Shoot", .001f, .25f);
15 }
16
17 // Update is called once per frame
18 void Update () {
19
20 }
21
22 void FixedUpdate() {
23 if(isGrabbed){
24 Vector3 worldPosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
25 worldPosition.z = 0;
26 // Debug.Log ("World Position: " + worldPosition.ToString());
27 this.transform.position = worldPosition;
28 }
29 }
30
31 void OnMouseDown(){
32 Debug.Log ("FairyScript.OnMouseDown()");
33 isGrabbed = true;
34 }
35
36 void OnMouseUp(){
37 Debug.Log ("FairyScript.OnMouseUp()");
38 if(isGrabbed){
39 isGrabbed = false;
40
41 // Vector3 diff = launchPoint.transform.position - this.transform.position;
42 // this.GetComponent<Rigidbody2D>().velocity = diff * launchFactor;
43 }
44 }
45
46 void OnTriggerEnter2D(Collider2D collider) {
47 // Debug.Log ("FairyScript.OnTriggerEnter2D()");
48
49 if (collider.gameObject.layer == LayerMask.NameToLayer("Reward")) {
50 Debug.Log ("Reward");
51
52 RewardScript reward = collider.gameObject.GetComponent<RewardScript> ();
53 int rewardValue = reward.rewardValue;
54 ScoreManager.score += rewardValue;
55
56 // Destroy (collider.gameObject);
57 collider.gameObject.SetActive(false);
58 }
59 if (collider.gameObject.layer == LayerMask.NameToLayer("Enemy")) {
60 Debug.Log ("Enemy");
61 playerLives--;
62
63 if (playerLives <= 0) {
64 Debug.Log ("Player is dead");
65 // stop the game, don't destroy the Player
66 // play dead animation
67 Destroy (gameObject, 0.1f);
68 } else {
69 // play harmed animation
70 StartCoroutine(Flasher());
71 }
72 }
73 }
74
75 IEnumerator Flasher()
76 {
77 for (int i = 0; i < 5; i++)
78 {
79 Color newColor = Color.red;
80 newColor.a -= 0.5f;
81 this.GetComponent<SpriteRenderer> ().material.color = newColor;
82 yield return new WaitForSeconds(.1f);
83 this.GetComponent<SpriteRenderer> ().material.color = Color.white;
84 yield return new WaitForSeconds(.1f);
85 }
86 }
87
88 void Shoot() {
89 Vector3 bulletOffset = new Vector3(0, 1f, 0.1f);
90 // Instantiate(bullet, this.transform.position + bulletOffset, Quaternion.identity);
91
92 // GameObject bullet = ObjectPooler.SharedInstance.GetPooledObject(gameObject.tag);
93 GameObject b = ObjectPooler.SharedInstance.GetPooledObject(bullet.tag);
94 if (b != null) {
95 b.transform.position = this.transform.position + bulletOffset;
96 b.SetActive(true);
97 }
98 }
99
100 }